package entidade;

import java.util.ArrayList;

import gerente.GerenteEmprestimo;
import gerente.GerenteMaterial;
import gerente.GerenteReserva;

public class ConcreteSubject {
	
	private ArrayList<Reserva> res_list;
	private Material tipo_mat;
	
	public ConcreteSubject(Material material, ArrayList<Reserva> res) {
		res_list = res;
		tipo_mat = material;
	}
	
	private void cadastrar(Reserva reserva, int posicao) {
		if((posicao < res_list.size())&&(res_list.get(posicao).getData_reserva().getTimeInMillis() < reserva.getData_reserva().getTimeInMillis())) {
			cadastrar(reserva,posicao + 1);
		}
		else res_list.add(posicao, reserva);
	}
	
	public void cadastrar(Reserva reserva) {
		cadastrar(reserva, 0);
	}
	
	public void remover(int id_user, int id_mat) {
		for(int i = 0; i < res_list.size(); i++) 
			if((res_list.get(i).getUsuario().getId() == id_user)&&(res_list.get(i).getMaterial().getId() == id_mat)) res_list.remove(i);
	}
	
	public void removerPrimeiro() {
		res_list.remove(0);
	}
	
	public int getTamanhoLista() {
		return res_list.size();
	}
	
	public int pegaCodPrimeiroFila() {
		return res_list.get(0).getUsuario().getId();
	}
	
	public Material getTipo() {
		return tipo_mat;
	}

	public void notificarPrimeiroFila() {
		res_list.get(0).getUsuario().notificarMaterialDisponivel(tipo_mat);
	}
	
}
